// TelnetOptionCollection.h: interface for the CTelnetOptionCollection class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TELNETOPTIONCOLLECTION_H__DCFE0FCF_D7E9_4A8C_848F_A8021E4937E1__INCLUDED_)
#define AFX_TELNETOPTIONCOLLECTION_H__DCFE0FCF_D7E9_4A8C_848F_A8021E4937E1__INCLUDED_

#include "TerminalTypeOption.h"
#include "WindowSizeOption.h"
#include "LineModeOption.h"
#include "UnknownOption.h"
#include "EchoOption.h"
#include "StatusOption.h"
#include "TimingMarkOption.h"
#include "TransmitBinaryOption.h"
#include "SupressGoAheadOption.h"
#include "ExoplOption.h"
#include "TerminalSpeedOption.h"

#include "ITelnetOptionCollection.h"
#include "TelnetOptionEvents.h"

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CTelnetLayer;

class CTelnetOptionCollection : public ITelnetOptionCollection, public CTelnetOptionEvents
{
private:
	CTelnetLayer *m_pTelnetLayer;

public:
	CTerminalTypeOption terminalTypeOption;
	CWindowSizeOption windowSizeOption;
	CLineModeOption lineModeOption;
	CUnknownOption unknownOption;
	CEchoOption echoOption;
	CStatusOption statusOption;
	CTimingMarkOption timingMarkOption;
	CTransmitBinaryOption transmitBinaryOption;
	CSupressGoAheadOption supressGoAheadOption;
	CExoplOption exoplOption;
	CTerminalSpeedOption terminalSpeedOption;

public:
	virtual CTelnetOption* FindOption(const char optionType);

public:
	virtual void OnOptionChange(CTelnetOption *pOption);
	virtual BOOL AgreeUsOn(CTelnetOption *pOption);
	virtual BOOL AgreeHimOn(CTelnetOption *pOption);

public:
	CTelnetOptionCollection(CTelnetLayer *pTelnetLayer);
	virtual ~CTelnetOptionCollection();

};

#endif // !defined(AFX_TELNETOPTIONCOLLECTION_H__DCFE0FCF_D7E9_4A8C_848F_A8021E4937E1__INCLUDED_)
